<?php


if (!function_exists('_get_called_class'))
{
    function _get_called_class()
    {
        $bt = debug_backtrace();
        $l = 0;
        do
        {
            $l++;
            $lines = file($bt[$l]['file']);
            $callerLine = $lines[$bt[$l]['line'] - 1];
            preg_match('/([a-zA-Z0-9\_]+)::' . $bt[$l]['function'] . '/', $callerLine, $matches);

            if ($matches[1] == 'self')
            {
                $line = $bt[$l]['line'] - 1;

                while ($line > 0 && strpos($lines[$line], 'class') === false)
                {
                    $line--;
                }
                preg_match('/class[\s]+(.+?)[\s]+/si', $lines[$line], $matches);
            }
        }

        while ($matches[1] == 'parent' && $matches[1]);

        return $matches[1];
    }
}

if (!function_exists ( 'gzdecode' )) {
    function gzdecode($data){
        $flags = ord ( substr ( $data, 3, 1 ) );
        $headerlen = 10;
        $extralen = 0;
        $filenamelen = 0;
        if ($flags & 4) {
                $extralen = unpack ( 'v', substr ( $data, 10, 2 ) );
                $extralen = $extralen [1];
                $headerlen += 2 + $extralen;
        }
        if ($flags & 8) // Filename 
                $headerlen = strpos ( $data, chr ( 0 ), $headerlen ) + 1;
        if ($flags & 16) // Comment 
                $headerlen = strpos ( $data, chr ( 0 ), $headerlen ) + 1;
        if ($flags & 2) // CRC at end of file 
                $headerlen += 2;
        $unpacked = @gzinflate ( substr ( $data, $headerlen ) );
        if ($unpacked === FALSE)
                $unpacked = $data;
        return $unpacked;
    }
}
